#ifndef __WIZ_BASE_TYPETRAITS_INT_HPP__SHANHAOBO_19800429__
#define __WIZ_BASE_TYPETRAITS_INT_HPP__SHANHAOBO_19800429__

namespace Wiz
{
    namespace TypeTraits
    {
        namespace Int
        {
            template<int n>
            struct Type
            {
                static const int iValue = n;

                typedef Type                                tType;
                typedef int                                 tValueType;

                typedef ::Wiz::TypeTraits::Int::Type<n + 1> tNext;
                typedef ::Wiz::TypeTraits::Int::Type<n - 1> tPrior;

                operator int() const
                {
                    return static_cast<int>(this->iValue);
                } 
            };
        } /// end of namespace Int


        namespace UInt
        {
            template<unsigned int n>
            struct Type
            {
                static const unsigned int iValue = n;

                typedef Type                                    tType;
                typedef unsigned int                            tValueType;

                typedef ::Wiz::TypeTraits::UInt::Type<n + 1>    tNext;
                typedef ::Wiz::TypeTraits::UInt::Type<n - 1>    tPrior;

                operator unsigned int() const
                {
                    return static_cast<unsigned int>(this->iValue);
                } 
            };
        } /// end of namespace Int
    } /// end of namespace TypeTraits
} /// end of namespace Wiz

#endif /*__WIZ_BASE_TYPETRAITS_INT_HPP__SHANHAOBO_19800429__*/
